This application is related to U.S. application Ser. No. 08/640,670 filed on Apr. 1, 1996 (Sun patent docket No. P1502); to U.S. application Ser. No. 08/644,643 filed on May 1, 1996 (Sun patent docket No. P1503); to U.S. application Ser. No. 08/644,643 filed on May 1, 1996 (Sun patent docket No. P1504); to U.S. application Ser. No. 08/639,527 filed on May 1, 1996 (Sun patent docket No. P1505); and to U.S. application Ser. No. 08/639,531 filed on May 1, 1996 (Sun patent docket No. P1505), all assigned to Sun Microsystems, Inc., assignee of the present invention, the disclosures of which are herein incorporated by this reference.
1. Field of the Invention
This invention relates to non-volatile caching systems for data processing systems, and methods for implementing such systems.
2. Description of Related Art
Caching has long been employed to increase performance of a relatively slow computer memory resource when a faster memory resource, which typically has a higher cost per stored bit, is available. Typically, a temporary memory block within the faster memory resource (i.e., a cache) is established for storing only a portion of the information stored within the slower memory resource. Rather than store within the faster memory resource an entire application program or an entire data file that may be resident on the slower memory resource, certain algorithms are employed to determine which portions of the program or data file are most likely to be accessed. When the system's central processing unit (CPU) calls a memory location that is not stored in the cache, the cache (if completely filled) must be at least partially overwritten with the required data from the slower memory resource. Likewise, when permanent changes are made to data, data in both the cache and the slower memory resource must be updated to reflect that change.
As this is written, there are roughly 150 million computers throughout the world capable of performing general business-related tasks. When the rapid proliferation of personal computers began in the early 1980s, nearly all of them were employed as stand-alone units. However, multi-user systems were soon developed. These early multi-user systems ran software written for the CP/M disk operating system, which had been written by Gary Kildall and was marketed by his company, Digital Research, Inc. The multi-user disk operating system MP/M supplied by Digital Research, Inc. connected several "dumb" terminals to a single microprocessor and a shared disk drive, while TurboDOS--a much more sophisticated product supplied by an unrelated company--utilized a master/slave arrangement much like the Local Area Networks (LANs) in use today.
Both the MP/M and the TurboDOS disk operating systems ran on computer systems based on either the Intel 8080 microprocessor or the Zilog Z-80 microprocessor. Neither of these early microprocessors could directly address more than 65,536 bytes of random-access memory. As a consequence of MP/M and TurboDOS requiring a minimum of about 50,000 bytes of random access memory, only about 15,000 bytes of addressable memory remained for application programs. As few application programs, other than simple word processors, required 15,000 bytes or less, the early multi-user systems were, for the most part, more intellectual curiosities than they were practical, general-use, multi-user data processing systems.
Distributed data processing (i.e., multiple LANs interconnected via a long-distance data link) using either MP/M or TurboDOS was even more hopeless, as it would have required loading a communication program into memory, in addition to the operating system, before application software could be loaded. However, with the introduction of IBM-compatible computers based on the Intel 80286 microprocessor, which was designed to address several megabytes of random-access memory, the development of practical LANs and distributed data processing systems became feasible. Although Novel Corporation initially captured a majority share of the LAN market, the number of networks utilizing LAN software from Microsoft Corp. has been growing.
Present-day LANs generally use a twisted wire pair or a coaxial cable to interconnect individual user computer systems to a server system. Fiber optics the interconnection of LANs is accomplished via telephone lines, special dedicated data lines, microwave, or satellite links. For acoustic links, each end of the link generally requires a modem. The other links typically utilize a "bridge" and a "router" at each end.
Distributed data processing networks and the LANs within those distributed networks can often benefit from caching. Typically, links between LANs of a distributed processing network are slower than the interconnections between the nodes (i.e., individual computers) of a LAN. Furthermore, though a distant memory resource (e.g. a disk drive on a distant server system) may be as fast or even faster than local memory resources, long distance interconnections over a data link can dramatically slow access time to that distant resource. Regardless of the type of link between the LANs of a distributed processing network, or between the nodes (i.e., individual systems) of a LAN, each data link has a given bandwidth which will permit only a finite amount of data to be simultaneously transferred over the link. Once the bandwidth is exceeded, as for example when more than a certain number of users are attempting to communicate over the same link (whether between LANs or within a LAN), response time over that link typically degrades as each user's request is delayed in order to evenly accommodate all competing requests. Consequently, caching of data read over a network can generally increase system performance both by reducing data link loading and by providing the end user with a cache of rapidly accessible data.
Within the last several years, compact disc read-only-memory devices (CD-ROMs) have become extremely popular due to the availability of lowcost, high-capacity compact disk storage media and relatively low cost CD-ROM readers (drives). In fact, nearly all new personal computers being sold in the U.S. include an installed CD-ROM drive. Although current CD-ROM media are capable of storing approximately 450-500 megabytes of data, access to that data is considerably slower than data stored on a modern hard disk drive. For example, the current standard for a high-performance CD-ROM drive, known as a "6X" drive is capable of reading, at most, about 600 kilobytes of data per second. A modern high-speed IDE hard disk drive, on the other hand, is capable of reading about six megabytes per second--roughly ten times the speed of a 6X CD-ROM drive. Thus, CD-ROM drive performance may also be greatly enhanced through caching.
Many graphical user interface (GUI) environments, such as Microsoft.RTM. Windows.TM. ver. 3.X, Microsoft Windows 95, Windows NT.RTM., IBM Corporation's OS/2.RTM., and Geoworks.RTM. have been developed over the years. Of the aforementioned products, only Windows NT and OS/2 are true operating systems, as Geoworks and Windows 3.x must be loaded and run under the venerable Microsoft MS-DOS operating system. Windows 95 is somewhat of a hybrid, as it also requires portions of MS-DOS for its operation. For the sake of simplicity, though, both Windows 3.X and Windows 95 are referred to hereinafter as operating systems.
As this is written, Microsoft Windows ver. 3.X is far and away the most used operating system, having been bundled with nearly every personal computer sold between 1989 and mid-1995. However, from the date of its release in 1995, the Microsoft Windows 95 operating system from Microsoft Corporation has been bundled with most new, high-performance personal computers. In less than a year, it has become the operating system of choice for most business applications, and is expected to rapidly supplant Windows 3.X as the most used operating system for personal computers. The potential exists for significantly increasing the performance of both CD-ROM drives and distributed processing networks operating under Windows 3.x and Windows 95 operating systems through caching.